package com.ctshk.rpc.guide.service;


import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.common.model.TokenUser;
import com.ctshk.rpc.guide.dto.GuideCollarSchedulingExcelDTO;
import com.ctshk.rpc.guide.dto.GuideCollarSchedulingListDTO;
import com.ctshk.rpc.guide.dto.GuideCollarSchedulingQueryDTO;
import com.ctshk.rpc.guide.req.*;

import java.util.List;

/**
 * <p>
 * 排班管理 服务类
 * </p>
 *
 * @author 谢诗宏
 * @since 2021-03-03
 */
public interface IGuideCollarSchedulingService {

    /**
     * 新增个人排班
     * 该函数谨慎修改
     *
     * @param req
     * @param tokenUser
     * @param flagea    标记是月初自动调用还是手动调用
     * @return
     */
    Result add(GuideCollarSchedulingAddReq req, TokenUser tokenUser, boolean flagea);

    /**
     * 查询个人排班
     *
     * @param req
     * @return
     */
    GuideCollarSchedulingQueryDTO query(GuideCollarSchedulingQueryReq req);

    /**
     * 修改个人排班
     *
     * @param req
     * @param tokenUser
     * @return
     */
    Result update(GuideCollarSchedulingUpdateReq req, TokenUser tokenUser);

    /**
     * 查询排班管理列表
     *
     * @param req
     * @return
     */
    PageResponse<GuideCollarSchedulingListDTO> list(GuideCollarSchedulingListReq req);

    /**
     * 批量新增个人排班
     *
     * @param req
     * @param tokenUser
     * @return
     */
    Result addList(GuideCollarSchedulingAddListReq req, TokenUser tokenUser);

    /**
     * 编辑新增个人排班
     *
     * @param req
     * @param tokenUser
     * @return
     */
    Result updateList(GuideCollarSchedulingUpdateListReq req, TokenUser tokenUser);

    /**
     * 导出Excel
     *
     * @param req
     * @return
     */
    List<GuideCollarSchedulingExcelDTO> selectListByIds(GuideCollarSchedulingListExcelReq req);

    /**
     * 删除工作安排需要回滚假期
     *
     * @return
     */
    Result delete(Long gcsId, TokenUser tokenUser);
}
